package com.example.teatea.tools;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
/**
 * 随机生成，学号，中文姓名，性别，出生年月，手机号，头像照片文件名
 */
public class RandomData {
    //定义姓氏字符串
    private static String surname = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹喻柏水窦章云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁柳酆鲍史唐费廉岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅皮卞齐康伍余元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计伏成戴谈宋茅庞熊纪舒屈项祝董梁杜阮蓝闵席季麻强贾路娄危江童颜郭梅盛林刁钟徐邱骆高夏蔡田樊胡凌霍虞万支柯咎管卢莫经房裘缪干解应宗宣丁贲邓郁单杭洪包诸左石崔吉钮龚程嵇邢滑裴陆荣翁荀羊於惠甄魏加封芮羿储靳汲邴糜松井段富巫乌焦巴弓牧隗山谷车侯宓蓬全郗班仰秋仲伊宫宁仇栾暴甘钭厉戎祖武符刘姜詹束龙叶幸司韶郜黎蓟薄印宿白怀蒲台从鄂索咸籍赖卓蔺屠蒙池乔阴郁胥能苍双闻莘党翟谭贡劳逄姬申扶堵冉宰郦雍却璩桑桂濮牛寿通边扈燕冀郏浦尚农温别庄晏柴瞿阎充慕连茹习宦艾鱼容向古易慎戈廖庚终暨居衡步都耿满弘匡国文寇广禄阙东殴殳沃利蔚越夔隆师巩厍聂晁勾敖融冷訾辛阚那简饶空曾毋沙乜养鞠须丰巢关蒯相查后江红游竺权逯盖益桓公万俟司马上官欧阳夏侯诸葛闻人东方赫连皇甫尉迟公羊澹台公冶宗政濮阳淳于仲孙太叔申屠公孙乐正轩辕令狐钟离闾丘长孙慕容鲜于宇文司徒司空亓官司寇仉督子车颛孙端木巫马公西漆雕乐正壤驷公良拓拔夹谷宰父谷粱晋楚阎法汝鄢涂钦段干百里东郭南门呼延归海羊舌微生岳帅缑亢况后有琴梁丘左丘东门西门商牟佘佴伯赏南宫墨哈谯笪年爱阳佟";
    //定义女孩名字字符串
    private static String girlname = "秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚宜可姬舒影荔枝思丽";
    //定义男孩名字字符串
    private static String boyName = "伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星光天达安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言若鸣朋斌梁栋维启克伦翔旭鹏泽晨辰士以建家致树炎德行时泰盛雄琛钧冠策腾楠榕风航弘";

    //产生【0~n-1】范围的随机整数
    public static int getNum(int n) {
        return new Random().nextInt(n);
    }

    //返回中文姓名，并设置性别
    public static String name_sex = "";//定义性别字符串

    public static String getChineseName() {
        //产生随机姓氏
        int index = getNum(surname.length());//获取姓氏随机位置
        String first = surname.substring(index, index + 1);//取得随机位置对应的姓氏
        //产生随机性别和名字中的第一个字
        int sex = getNum(2);//随机获取0或1，用来判断男，女
        String str = boyName;//定义名字字符串，值为男性名字字符串的值
        int length = boyName.length();//获取名字字符串长度
        if (sex == 0) {//如果随机是女性
            str = girlname;//名字字符串的值为女性名字字符串的值
            length = girlname.length();//获取名字字符串长度
            name_sex = "女";
        } else {
            name_sex = "男";
        }
        index = getNum(length);//获取名字字符串随机位置
        String second = str.substring(index, index + 1);//取得随机位置对应的名字
        //产生随机名字中的第二个字
        int hasThird = getNum(2);
        String third = "";
        if (hasThird == 1) {
            index = getNum(length);
            third = str.substring(index, index + 1);
        }
        return first + second + third;
    }

//    //随机产生长度固定为10的学号
//    public static String getRandomSno() {
//        StringBuilder sno = new StringBuilder();//定义存储学号可变字符串
//        sno.append("202140");//加入学号固定前6位
//        String str = "000" + (getNum(9999) + 1);//随机产生0001~0009999之间的字符串
//        sno.append(str.substring(str.length() - 4));//截取str字符串后四位，并添加到学号可变字符串
//        return sno.toString();
//    }

    //随机产生出生日期
    public static String getRandomBirthday() throws ParseException {
        //指定日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //获取2000年1月1日的毫秒数
        long sdate = sdf.parse("2000-01-01").getTime();
        long edate = sdf.parse("2003-01-01").getTime();
        //获取指定日期范围随机日期的毫秒数
        long time = new Random().nextLong(edate - sdate) + sdate;
        return sdf.format(new Date(time));//根据毫秒得到指定格式日期
    }

    //随机产生手机号码
    private static String[] phoneFirst = "134,135,136,137,138,139,150,151,152,157,158,159,130,131,132,155,156,133,153".split(",");//定义手机前3位数组

    public static String getRandomPhone() {
        StringBuilder sbPhone = new StringBuilder();//定义存储手机号码可变字符串
        int index = getNum(phoneFirst.length);//随机获取手机前3位数组下标
        String first = phoneFirst[index];//获取手机前3手位
        String second = String.valueOf(getNum(8888) + 10000).substring(1);//随机获取手机中间4位
        String third = String.valueOf(getNum(9100) + 10000).substring(1);//随机获取手机后4位
        sbPhone.append(first).append(second).append(third);//添加到手机号码可变字符串
        return sbPhone.toString();
    }

//    //随机产生头像照片文件名
//    public static String getPhoto() {
//        int index = getNum(4) + 1;
//        String photofile = "photo" + index + ".jpg";
//        return photofile;
//    }

//    //测试随机生成数据
//    public static void main(String[] args) throws ParseException {
//        for (int i = 0; i < 5; i++) {
//            System.out.println(getRandomSno() + "\t" + getChineseName() + "\t" + getRandomBirthday() + "\t" + name_sex + "\t" + getRandomPhone() + "\t" + getPhoto());
//        }
//    }
}
